iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
Vue.js

.NET Core與Vue3組合開發技系列 第 15

[Day 15] onMounted使用_ref引用html元素使用

  • 分享至 

  • xImage
  •  

onMounted使用
vue程式碼寫完後,需要經過編譯、掛載實例、HTML 模板渲染、事件偵聽、更新 DOM 等階段。
整個生命週期中,運行著稱為生命週期鉤子的函數,讓開發者能於特定的階段跑自己的程式碼,進行一些特殊的操作。

onMounted()鉤子函數可以用來在元件完成初始渲染並建立 DOM 節點後執行程式碼。
可以將 onMounted()鉤子函數理解為 JQuery 中的$( document ).ready(),需要將整個頁面上所有的 HTML 元素全部載入完成之後,才會執行onMounted()鉤子函數中的程式碼。

舉例:最常見的就是當頁面完全加載後,找到按鈕,然後綁定一個事件,並執行一些 JavaScript 程式碼。
這些 JavaScript 程式碼就需要在 onMounted()鉤子函數中執行。

Responsive.vue直接修改
範例程式

<!-- eslint-disable --> 
<template>
    <div>
        <input  type="button" value="提交" />
    </div>
</template>
<script setup>
    import { onMounted } from 'vue'

    onMounted(() => {
        console.log("組件已完成加載,允許存取html元素。");
    });
</script>

記得App.vue要有相應引入

<template>
  <main>
    <Responsive/>
  </main>
</template>

<script setup>
  import Responsive from './components/Responsive.vue';

</script>

於單一檔案組件中,onMounted()函數需要匯入之後才能使用,onMounted()函數也屬於 Vue 提供的內建函數。

https://ithelp.ithome.com.tw/upload/images/20230924/20107452FbFwGgHHWW.png

onMounted()是函數,使用時在其中嵌套一個call back函數來使用。

於call back函數中,就可以處理 DOM 載入完成之後要執行的程式碼。
當執行完整個元件後,就會自動執行 onMounted()函數中的程式碼。在此先暫時主控台輸出確認效果

ref引用html元素使用

vue模板引用的核心功能指的就是當 HTML 元素在頁面上呈現之之後,可藉由 ref 屬性直接存取到某個 HTML 元素的參考。我們透過 ref 根據這個位址找到 HTML 元素,並可以直接操作 HTML 元素,如事件綁定、新增樣式、新增屬性。

Responsive.vue直接修改
範例程式-引用按鈕元素,並進行事件綁定

<!-- eslint-disable --> 
<template>
    <div>
        <input ref="btn"  type="button" value="提交" />
    </div>
</template>
<script setup>
    import { ref,onMounted } from 'vue'
    const btn = ref();
    onMounted(() => {
        btn.value.onclick = () => {alert('跳窗事件觸發');}
    });
</script>

https://ithelp.ithome.com.tw/upload/images/20230924/20107452ywaZcnXXbh.png

透過在< input >元素上,使用 ref屬性與 btn 響應式變數綁定。
綁定之後,就可以在 onMounted()函數中透過 btn 操作該按鈕元素了
在此綁了一個onclick事件

要特別留意若綁定ref屬性有重疊會以最下面那個為主那上面的就不會有效果
https://ithelp.ithome.com.tw/upload/images/20230924/201074525X2kerbT9v.png

本篇已同步發表至個人部落格
https://coolmandiary.blogspot.com/2023/09/2023day-15-onmountedrefhtml.html


上一篇
[Day 14] setup()方法 和 <script setup>差異
下一篇
[Day 16] 使用及引入bootstrap樣式
系列文
.NET Core與Vue3組合開發技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言